home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
t3_1
/
risc_src.lha
/
risc_sources
/
comp
/
fixes.t
Wrap
Text File
|
1990-06-11
|
1KB
|
31 lines
6/8/90 parassign.t
(define (do-indirects node do-later)
(iterate loop ((items do-later))
(if items
(let ((item (car items))
(contour (lambda-self-var *heap-env*)))
(receive (mover target) (get-mover-and-target item)
(cond ((eq? (register-loc contour) target)
(if (cdr items)
(loop (append (cdr items) (cons item '())))
(mover node (car item) target)))
((eq? (temp-loc contour) target)
(cond ((not (cdr items))
(mover node (car item) target))
((receive (#f target) (get-mover-and-target (cadr items))
(eq? (register-loc contour) target))
(set (temp-loc contour) nil)
(set (temp-node target) nil)
(mover node (car item) target)
(loop (cdr items)))
(else
(loop (append (cdr items) (cons item '()))))))
(else
(mover node (car item) target)
(loop (cdr items)))))))))
6/11/90 closure.t
(set (variable-number *dummy-var*) 0)